import { registerMicroApps, start, createStore } from "../../micro/index.js";
import { loading } from '../store/index.js';

// 通过createStore来获取到我们store的实例，这样就获取到了我们全局状态管理的一部分数据
const store = createStore();
// 如果说我们想在子应用里同时使用store的数据，那么这个时候呢我们store的数据是需要做这样一个存储
window.store = store; // 可以在子应用里使用 window.store 来修改我们的数据
// 那么这样呢我们就获取到了我们之间在我们store里面存的所有的store的数据
store.subscribe((newValue, oldValue)=>{
 // 添加一个订阅者
 console.log('添加一个订阅者 ',newValue, oldValue);
});
/* const storeData = store.getStore();
// 更新store的数据，我们传入的是一个完整的store
store.update({
  ...storeData,
  a: 1
}); // 需要将我们获取store的方法和我们修改store的方法同时放到 vue3 子应用的mount中 */

// 注册子应用
export const registerApp = (list) => {
  // 注册到微前端框架里
  registerMicroApps(list, {
    // 声明了三个主应用的生命周期
    beforeLoad: [
      () => {
        loading.changeLoading(true);
        console.log("main-开始加载");
      },
    ],
    mounted: [
      () => {
        loading.changeLoading(false);
        console.log('main-渲染完成');
      }
    ],
    destroyed: [
      () => {
        console.log('main-卸载完成');
      }
    ]
  });
  // 启动子应用
  start();
};
